 import Vue from 'vue'
 import App from '@/App'
 import router from '@/router'                 // api: https://github.com/vuejs/vue-router
 import store from '@/store'                   // api: https://github.com/vuejs/vuex
 import VueCookie from 'vue-cookie'            // api: https://github.com/alfhen/vue-cookie
 import '@/element-ui'                         // api: https://github.com/ElemeFE/element
 import '@/icons'                              // api: http://www.iconfont.cn/
 import '@/element-ui-theme'
 import '@/assets/scss/index.scss'
 import httpRequest from '@/utils/httpRequest' // api: https://github.com/axios/axios
 import axios from 'axios'
 import { hasPermission } from '@/utils'

 import cloneDeep from 'lodash/cloneDeep'
 import moment from 'moment'// 导入moment

 Vue.prototype.moment = moment

 Vue.use(VueCookie)
 Vue.prototype.axios = axios
 Vue.config.productionTip = false
 Vue.prototype.hasPermission = hasPermission

 // 非生产环境, 适配mockjs模拟数据                 // api: https://github.com/nuysoft/Mock
 if (process.env.NODE_ENV !== 'production') {
   require('@/mock')
 }

 axios.interceptors.request.use(function (config) {
   let token = sessionStorage.getItem('token')
   if (token) {
     // 这里将token设置到headers中，header的key是token，这个key值根据你的需要进行修改即可
     config.headers.token = token
   }
   return config
 }, function (error) {
   // 对请求错误做些什么
   return Promise.reject(error)
 })

 // 添加全局响应拦截器
 axios.interceptors.response.use(function (response) {
   // 对响应数据做点什么
   if (response.data.code === 401) {
     sessionStorage.removeItem('userInfo')
     sessionStorage.removeItem('token')
     sessionStorage.removeItem('permissionList')
     router.push('/login')
   } else {

   }
   return response
 }, function (error) {
   return Promise.reject(error)
 })

 // 挂载全局
 Vue.prototype.$http = httpRequest // ajax请求方法
 // Vue.prototype.isAuth = isAuth     // 权限方法

// 保存整站vuex本地储存初始状态
 window.SITE_CONFIG['storeState'] = cloneDeep(store.state)

/* eslint-disable no-new */
 new Vue({
   el: '#app',
   router,
   store,
   template: '<App/>',
   components: { App }
 })
